home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / username.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  1KB  |  51 lines

  1. /*
  2.  * username.c : Some people are tricky about this...
  3.  *
  4.  * George Ferguson, ferguson@cs.rochester.edu, 23 Apr 1993.
  5.  *
  6.  * Compile-time parameters (config.h):
  7.  *    HAVE_PWD :      File <pwd.h> defines getpwuid()
  8.  *    HAVE_GETLOGIN : Function char *getlogin() exists
  9.  */
  10. #include <stdio.h>
  11. #include "config.h"
  12.  
  13. #include <sys/types.h>
  14. extern uid_t getuid();        /* not in stdlib.h, but is in unistd.h */
  15. extern char *getenv();
  16. #ifdef HAVE_GETPWUID
  17. #include <pwd.h>
  18. #endif
  19. #ifdef HAVE_GETLOGIN
  20. extern char *getlogin();
  21. #endif
  22.  
  23. char *
  24. GetUsername()
  25. {
  26.     char *username;
  27.  
  28. #ifdef HAVE_GETPWUID
  29.     struct passwd *pwe;
  30.     if ((pwe=getpwuid(getuid())) != NULL)
  31.         username = pwe->pw_name;
  32.     else
  33. #endif
  34. #ifdef HAVE_GETLOGIN
  35.     if ((username=getlogin()) == NULL)
  36. #endif
  37.         if ((username=getenv("USER")) == NULL) {
  38.         fprintf(stderr,"Couldn't find username, you should set $USER");
  39.         username = "anonymous";
  40.         }
  41.     return(username);
  42. }
  43.  
  44. #ifdef STANDALONE
  45. main()
  46. {
  47.     printf("%s\n",GetUsername());
  48.     exit(0);
  49. }
  50. #endif /* STANDALONE */
  51.